//
//  test.m
//  FBSnapshotTestCase
//
//  Created by zhuxm2023 on 2024/1/23.
//
#import "UIScreen+ZXCategory.h"
#import "UIDevice+ZXDeviceName.h"

@implementation UIScreen (ZXCategory)

+ (CGFloat)screenWidth{
    return [self screen].bounds.size.width;
}


+ (UIScreen *)screen{
    if (@available(iOS 13.0, *)) {
        
        NSSet <UIScene *>*connectedScenes = [UIApplication sharedApplication].connectedScenes;
        UIWindowScene *scene = nil;
        if (![UIApplication sharedApplication].supportsMultipleScenes) {
            scene = (UIWindowScene *)[[connectedScenes allObjects] firstObject];
        }else{
            for (UIWindowScene * windowScene in connectedScenes) {
                if (windowScene.activationState == UISceneActivationStateForegroundActive) {
                    scene = windowScene;
                }
            }
        }
        UIScreen *mainScreen = scene.screen;
        return mainScreen;
    }
    else
    {
        return [UIScreen mainScreen];
    }
}


+ (CGFloat)screenHeight{
    return [self screen].bounds.size.height;
}

+ (CGSize)screenSize{
    return [self screen].bounds.size;
}


//一个设备的分辨率为1920x1080，就表示它的屏幕上有1920个水平物理像素和1080个垂直物理像素
+ (CGSize)physicalPixelsSize{
    return [[self screen]currentMode].size;
}


+ (CGFloat)pixelAspectRatio{
    return [[self screen]currentMode].pixelAspectRatio;
}


#pragma mark
/***************************
 类型太多了，没法归类。
 像素密度PPI(Pixel Per Inch)：是指每英寸上容纳的像素数量。即每英寸多少像素。
 计算PPI的公式
 可以简单用勾股定理计算出对线上出现的像素，再除以对角线长度:
 ppi = 平方根{px.width(平方2)+px.height(平方2)}/屏幕尺寸(英寸)；
 获取屏幕信息（尺寸，宽，高），bounds 就是屏幕的全部区域：例：
 
 手机机型             逻辑像素(pt)  物理像素（px像素）      缩放因子  屏幕尺寸(diagonal英寸) 像素密度(PPI)
 iPhone 4:          {320, 480}                          2x      3.5          326
 iPhone 5:          {320, 568}   640x1136               2x      4.0          401
 iPhone 6:
 iPhone 6s
 iPhone 7:
 iPhone 8:
                    {375, 667}   750x1334               2x      4.7          326
 iPhone 6 Plus
 iPhone 6s Plus
 iPhone 7 Plus
 iPhone 8 Plus:
                    {414, 736}   1080x1920              3x      5.5          401
 iPhone X:          {375, 812}   1125x2436              3x      5.8          458
 iPhone Xs:         {414, 812}   1125x2436              3x      5.8          458
 iPhone Xs Max:     {414, 896}   1242x2688              3x      6.5          458
 iPhone Xr:         {414, 896}   828x1792               2x      6.1          326
 iPhone 11:         {414, 896}   828x1792               2x      6.1          326
 iPhone 11 Pro:     {414, 896}   1125x2436              3x      5.8          458
 iPhone 11:         {414, 896}   1242x2688              3x      6.5          458
 iPhone SE 2: 
 iPhone SE 3:      
                    {375, 667}   750x1334               2x      4.7          326
 iPhone 12:
 iPhone 12 Pro:
 iPhone 13:
 iPhone 14:
                    {390, 844}   1170x2532              3x      6.1         460
 iPhone 12 mini:
 iPhone 13 mini:
                    {375, 812}   1080x2340              3x      5.4         476
 iPhone 12 Pro:
 iPhone 13 Pro:
                    {390, 844}   1170x2532              3x      6.1         460   120Hz
 iPhone 14 Pro:
 iPhone 15 Pro:
                    {393, 852}   1179x2556              3x      6.1         460   120Hz
 iPhone 14 Plus:
                    {428, 926}   1284x2778              3x      6.7         458   60Hz
 iPhone 15 Plus:
                    {430, 932}   1290x2796              3x      6.7         460   60Hz
 iPhone 12 Pro Max:
 iPhone 13 Pro Max:
                    {428, 926}   1284x2778              3x      6.7         458
 iPhone 14 Pro Max:
 iPhone 15 Pro Max:
                    {430, 932}   1290x2796              3x      6.7         460   120Hz
 
 ===============================
 
 // 2020年9月 iPhone 12 mini、iPhone 12、iPhone 12 Pro、iPhone 12 Pro Max；
 // 操作系统iOS 14.0
 iPhone 12:
                    {390, 844}   1170x2532              3x      6.1         460
 iPhone 12 mini:
                    {375, 812}   1080x2340              3x      5.4         476
 iPhone 12 Pro:
                    {390, 844}   1170x2532              3x      6.1         460
 iPhone 12 Pro Max:
                    {428, 926}   1284x2778              3x      6.7         458
 
 // 2021年9月 iPhone 13 mini、iPhone 13、iPhone 13 Pro、iPhone 13 Pro Max、Phone SE 3；
 // 操作系统iOS 15.0
 iPhone 13:
                    {390, 844}   1170x2532              3x      6.1         460   60Hz
 iPhone 13 mini:
                    {375, 812}   1080x2340              3x      5.4         476   60Hz
 iPhone 13 Pro:
                    {390, 844}   1170x2532              3x      6.1         460   120Hz

 iPhone 13 Pro Max:
                    {428, 926}   1284x2778              3x      6.7         458   120Hz
 iPhone SE 3:
                    {375, 667}   750x1334               2x      4.7         460   60Hz
 
 // 2022年9月 iPhone 14、（Plus、Pro、Pro Max）；
 // 操作系统iOS 16.0
 iPhone 14:
                    {390, 844}   1170x2532              3x      6.1         460   60Hz
 iPhone 14 Plus:
                    {428, 926}   1284x2778              3x      6.7         458   60Hz
 iPhone 14 Pro:
                    {393, 852}   1179x2556              3x      6.1         460   120Hz
 iPhone 14 Pro Max:
                    {430, 932}   1290x2796              3x      6.7         460   120Hz
 
 // 2023年9月 iPhone 15、（Plus、Pro、Pro Max）；
 // 操作系统iOS 17.0
 iPhone 15:
                    {393, 852}   1179x2556              3x      6.1         460   60Hz
 iPhone 15 Plus:
                    {430, 932}   1290x2796              3x      6.7         460   60Hz
 iPhone 15 Pro:
                    {393, 852}   1179x2556              3x      6.1         460   120Hz
 iPhone 15 Pro Max:
                    {430, 932}   1290x2796              3x      6.7         460   120Hz
 
 // 2024年9月 iPhone 16、（Plus、Pro、Pro Max、16e）；
 // 操作系统iOS 18.0
 iPhone 16:
                    {393, 852}   1179x2556              3x      6.1         460   60Hz
 iPhone 16 Plus:
                    {430, 932}   1290x2796              3x      6.7         460   60Hz
 iPhone 16 Pro:
                    {402, 874}   1206x2622              3x      6.3         460   120Hz
 iPhone 16 Pro Max:
                    {440, 956}   1320x2868              3x      6.9         460   120Hz
 iPhone 16 e:
                    {393, 852}   1179x2556              3x      6.1         460   60Hz
 ---------------------------------
 上架Itunes connect 截屏规范：这个英寸和实际尺寸不一样。https://developer.apple.com/cn/help/app-store-connect/reference/screenshot-specifications
 6.9 英寸显示屏
 iPhone 15 Pro Max：
 iPhone 15 Plus：
 iPhone 14 Pro Max： 截屏可以是 1290 x 2796 像素（竖屏），1320 x 2868 像素（竖屏）
 ****************************/

+ (CGFloat)screenInch{
    int screenHeight = MAX(UIScreen.mainScreen.bounds.size.width, UIScreen.mainScreen.bounds.size.height);
    NSString *model = [UIDevice currentDevice].model;
    if([model isEqualToString:@"iPhone"]) {
        switch (screenHeight) {
            case 480: return 3.5;   // iPhone 4s及以下
            case 568: return 4.0;  // iPhone 5/5s/SE(一代)
            case 667: return 4.7;  // iPhone 6/6s/7/8/SE(二代)
            case 736: return 5.5;   // iPhone 6+/6s+/7+/8+
            case 812: return 5.8;   // iPhone X/XS/11 Pro
            case 844: return 6.1;   // iPhone 12/13 Pro
            case 852: return 6.1;   // iPhone 14 Pro
            case 896:{
                if ([UIScreen mainScreen].scale == 3.0) {
                    return 6.5;      // iPhone XS Max/11 Pro Max
                } else {
                    return 6.1;      // iPhone 11/XR
                }}
            case 926: return 6.7;   // iPhone 12/13 Pro Max
            case 932: return 6.7;   // iPhone 14 Pro Max
            default: return 0;
        }
    }
    if([model isEqualToString:@"iPad"]) {
        switch (screenHeight) {
            case 1024: return 7.9;  // iPad mini
            case 1080: return 10.2;  // 基础款iPad
            case 1112: return 10.5;  // iPad Air(三代)
            case 1180: return 10.9;  // iPad Air(四代)
            case 1194: return 11.0; // iPad Pro 11英寸
            case 1366: return 12.9;  // iPad Pro 12.9英寸
            default: return 0;
        }
    }
    return 0;
}


@end
